Daily Pre-release #171
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Daily Pre-release | |
permissions: {} | |
on: | |
schedule: | |
- cron: '0 0 * * 1-5' # Runs Mon-Fri at midnight UTC | |
workflow_dispatch: # Allows manual trigger if needed | |
jobs: | |
create-pre-release: | |
permissions: | |
contents: write | |
id-token: write | |
runs-on: ubuntu-latest | |
environment: build | |
env: | |
GAR_IMAGE_BASE: ${{ vars.GAR_REPO }}/blurts-server | |
GAR_REGISTRY: us-docker.pkg.dev | |
DOCKERHUB_IMAGE: mozilla/blurts-server # Define Docker Hub image name | |
steps: | |
- name: Checkout main branch | |
uses: actions/checkout@v4 | |
with: | |
ref: main | |
persist-credentials: false | |
- name: Get current date | |
run: | | |
echo "CURRENT_DATE=$(date +%Y.%m.%d)" >> $GITHUB_ENV | |
echo "tag_name: $(date +%Y.%m.%d)" | |
- name: Create Pre-release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
curl -X POST \ | |
-H "Authorization: token $GITHUB_TOKEN" \ | |
-H "Accept: application/vnd.github+json" \ | |
-H "X-GitHub-Api-Version: 2022-11-28" \ | |
https://api.github.com/repos/${{ github.repository }}/releases \ | |
-d '{ | |
"tag_name": "${{ env.CURRENT_DATE }}", | |
"target_commitish": "main", | |
"name": "${{ env.CURRENT_DATE }}", | |
"body": "Daily pre-release for ${{ env.CURRENT_DATE }}.", | |
"prerelease": true, | |
"draft": false, | |
"generate_release_notes": true | |
}' | |
# We cannot rely on the release_retag.yaml workflow because of the | |
# auth scope of the default github token. It's a good security practice | |
# to prevent a github action being triggered by another. | |
# So we will deliberately push to dockerhub below | |
- name: Log in to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Authenticate to Google Cloud | |
id: gcp-auth | |
uses: google-github-actions/auth@v2 | |
with: | |
token_format: access_token | |
workload_identity_provider: ${{ vars.GCPV2_GITHUB_WORKLOAD_IDENTITY_PROVIDER }} | |
service_account: ${{ vars.GCP_GAR_SERVICE_ACCOUNT }} | |
- name: Login to Artifact Registry | |
id: gar-login | |
uses: docker/login-action@v3 | |
with: | |
registry: ${{ env.GAR_REGISTRY }} | |
username: oauth2accesstoken | |
password: ${{ steps.gcp-auth.outputs.access_token }} | |
- name: Extract metadata (tags, labels) for Docker | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.DOCKERHUB_IMAGE }} | |
tags: type=sha,format=short,prefix= | |
- name: Pull Docker image from GAR with commit tag | |
run: docker pull ${{ env.GAR_IMAGE_BASE }}:${{ steps.meta.outputs.version }} | |
- name: Tag Docker image for Docker Hub with release tag | |
run: docker tag ${{ env.GAR_IMAGE_BASE }}:${{ steps.meta.outputs.version }} ${{ env.DOCKERHUB_IMAGE }}:${{ env.CURRENT_DATE }} | |
- name: Push Docker image to Docker Hub with release tag | |
run: docker push ${{ env.DOCKERHUB_IMAGE }}:${{ env.CURRENT_DATE }} | |
- name: Tag Docker image for GAR with release tag | |
run: docker tag ${{ env.GAR_IMAGE_BASE }}:${{ steps.meta.outputs.version }} ${{ env.GAR_IMAGE_BASE }}:${{ env.CURRENT_DATE }} | |
- name: Push Docker image to GAR with release tag | |
run: docker push ${{ env.GAR_IMAGE_BASE }}:${{ env.CURRENT_DATE }} |